package com.fruit.mapper.order;

import java.util.List;
import java.util.Map;

import com.fruit.pojo.order.MailOrder;
import com.fruit.pojo.order.MailOrderSummary;

/**
 * 
 * MailOrderMapper
 *
 * @author shibeilei
 * @version 2017.12.05 19:09
 *
 */
public interface MailOrderMapper {

	/**
	 * 寄回订单列表
	 * @param params 
	 * @return 返回寄回订单列表
	 */
	List<MailOrder> getMailOrderList(Map<String, Object> params);
	
	/**
	 * 修改寄回订单地址
	 * @param mo   
	 * @return 返回修改结果
	 */
	int updateMailOrderAddress(MailOrder mo);
	
	/**
	 * 查询寄回订单
	 * @param id 
	 * @return 返回寄回订单
	 */
	MailOrder getMailOrderById(long id);
	
	/**
	 * 保存寄回订单
	 * @param mailOrder 
	 * @return 返回新增结果
	 */
	int saveMailOrder(MailOrder mailOrder);
	
	/**
	 * 修改寄回订单CODE
	 * @param mailOrder 
	 * @return 返回修改结果
	 */
	int updateMailOrderCode(MailOrder mailOrder);
	
	/**
	 * 通过基地ID获取邮寄订单列表
	 * @param params 
	 * @return 返回邮寄订单列表
	 */
	List<MailOrder> getMailOrderListNotDeliverByBaseId(Map<String, Object> params);
	
	/**
	 * 通过基地ID获取已发货邮寄订单列表
	 * @param params 
	 * @return 返回邮寄订单列表
	 */	
	List<MailOrder> getMailOrderListDeliverByBaseId(Map<String, Object> params);
	
	/**
	 * 通过IDS获取寄回订单合并列表
	 * @param params 
	 * @return 返回结果
	 */
	List<MailOrder> getMailOrderMergeListByIds(Map<String, Object> params);
	
	/**
	 * 通过IDS获取寄回订单数量
	 * @param params 
	 * @return 返回数量
	 */
	Integer getMailOrderCntByIds(Map<String, Object> params);
	
	/**
	 * 保存合并订单信息
	 * @param mailOrderSummary 
	 * @return 返回保存结果
	 */
	int saveMailOrderSummary(MailOrderSummary mailOrderSummary);
	
	/**
	 * 更新订单CODE
	 * @param mailOrderSummary 
	 * @return 返回更新结果
	 */
	int updateMailOrderSummaryCode(MailOrderSummary mailOrderSummary);
	
	/**
	 * 更新寄回订单summaryId
	 * @param params 
	 * @return 返回更新结果
	 */
	int updateMailOrderSummaryId(Map<String, Object> params);
	
	/**
	 * 更新寄回合并订单状态
	 * @param params 
	 * @return 返回更新结果
	 */
	int updateMailOrderSummaryState(Map<String, Object> params);
	
	/**
	 * 更新寄回订单异常状态
	 * @param params 
	 * @return 返回更新结果
	 */
	int updateMailOrderErrorState(Map<String, Object> params);
	
	/**
	 * 获取已发货订单详情
	 * @param id 寄回订单ID
	 * @return 返回订单详情
	 */
	MailOrder getMailOrderInfo(long id);
	
	/**
	 * 物流列表
	 * @param params 
	 * @return 返回物流列表
	 */
	List<MailOrderSummary> getMailOrderSummaryList(Map<String, Object> params);
	
	/**
	 * 物流订单详情
	 * @param code 
	 * @return 物流订单详情
	 */
	MailOrderSummary getMailOrderSummaryInfo(String code);
	
	/**
	 * 通过合并订单ID返回寄回订单
	 * @param summaryId 
	 * @return 寄回订单列表
	 */
	List<MailOrder> getMailOrderBySummaryId(long summaryId);
	
	/**
	 * 通过基地ID返回基地信息
	 * @param baseId 
	 * @return 基地信息
	 */
	Map<String, String> getDeliverAddressByBaseId(int baseId);
	
	/**
	 * 通过基地ID返回订单数量
	 * @param baseId 
	 * @return 订单数量
	 */
	Map<String, Integer> getAllDeliverStateNum(int baseId);
	
}
